在已发布的V23 Alpha版本中,深度操作系统正式适配RISC-V!
RISC-V指令集是基于精简指令集计算(RISC)原理建立的开放指令集架构(ISA),RISC-V则是在指令集不断发展和成熟的基础上建立的全新指令。RISC-V指令集完全开源,设计简单,拥有模块化的设计、完整的工具链、易于移植Unix系统、以及大量的开源实现和流片案例。此次,我们将从方案的发起和选择、解决适配过程中的问题、实现核心目标及未来展望这几大方面,带领各位小伙伴一起走进我们的适配之旅!
方案发起
想要适配一个全新的架构,就需要从最底层的系统组件开始逐步适配。所以在最初的计划中,我们打算完全构建整个系统仓库,先用交叉编译工具链的方式去构建gcc、glibc等底层库,再用交叉编译出来的工具链完成自构建,之后依次构建上层软件。但在小组内部讨论中,这套方案最终被否决。经过粗略统计,仓库最少需要适配6500+的软件包,才能形成相对完整的依赖树。数量众多的软件包又需要进行至少三轮的重复构建,确保依赖树的正确。同时,不少软件包的构建存在错误,这类错误占到总数的百分之40左右,通常是由于依赖问题、单元测试不通过、RISC-V架构未适配等问题导致的。在此基础上,使用交叉编译工具链批量编译的成功率较低。
与此同时,数量众多的软件包的构建规则又各不相同:有的需要识别架构类型,有的需要依赖特定的环境·····解决完以上问题,可能需要耗费好几个月的时间。所以,想要在预期时间内完成目标看起来困难重重:一方面是上述所讲的这些问题,另一方面是由于时间有限,难以处理这么多的问题。既然“耗时”成为关键问题,那么是否存在一种既可靠,又能在时间上折中的方式呢?这就要说到我们在得出最终解决方案前的一系列考量了。在我们开始适配之前,有很多的linux发行版已经完成了RISC-V的支持,比如Debian、Ubuntu等知名的发行版。而deepin的核心主要是DDE和各类应用程序,底层软件包与 Debian 相似,为了尽快看到效果,我们选择自上而下的方式,先适配DDE等上层软件,提供一个可用的图形环境。这样在我们完成初步的适配后,就可以让更多的开发者参与进来发现问题、修复问题,后续的仓库重构也可以同步进行。由此,我们打算先基于Debian,使用此系统仓库适配DDE等上层软件,在适配它们的同时,构建deepin系统仓库的RISC-V 64版本。而在系统仓库完成之前,可以先使用Debian+DDE的版本,在RISCV设备上进行功能测试和修复。最终待系统仓库完成后,便能复用已经适配好的DDE和各个上层软件,可以节约不少时间。
此外,经小组讨论,我们决定采用交叉编译加qemu模拟的方式进行系统基础库的RISC-V架构适配。部分编译工具链采用交叉编译的方式构建,优先保证构建出一个可用的基础base环境,其余系统基础库以及上层应用采用qemu模拟RISC-V架构的方式构建。虽然该方案也存在问题,比如qemu模拟的方式效率较低,大型软件的编译速度较慢等,但是qemu可以更方便地利用x86等其他架构机器节点,进行批量编译的任务,编译错误的占比也降到了百分之25左右。且该方案还可以使用多台节点并行构建的方式,加速构建所需的时间。经过对比,qemu模拟的方案显然更加符合我们的需求。在这一最终方案的确定下来后,我们经过几轮重复构建,终于达到自编译的需求。至此,我们已经得到了一个可用的编译环境。但正如之前提到的问题:数量庞大的软件仓库为我们的适配任务带来很多难题。除了时间上的紧迫外,凭我们现有的人力也是难以处理如此多编译任务的。基于这种需求,我们开发了批量编译的脚本、自动依赖分析脚本等工具,去辅助完成批量编译工作,让这些工具协助我们开展编译任务,加快了项目的进程。
同时,在这一过程中,我们也遇到了不少无法通过脚本工具解决的问题,比如:由于基础软件版本选型问题,导致部分软件包缺乏RISC-V架构的支持;构建过程中遇到的各种错误导致的构建失败等。上述这一系列无法通过自动化工具解决的问题,最终也由我们进行了手动处理。作为我们系统上最核心的组件之一,DDE桌面环境的重要性不言而喻,这也是我们将它视作“重中之重”的原因。在攻坚克难,处理完各种各样的问题后,我们终于开始进行核心目标的建设——在RISC-V平台上适配DDE桌面环境。比起之前遇到的困难,构建DDE桌面环境过程相对来说更加顺利,除了个别软件包需要修改代码、构建脚本等工作之外,便没有严重问题需要处理。只要仓库的依赖完备,基本都可以构建通过。至此,我们已经完成了绝大部分软件包的两轮编译,保障了所有自研应用构建通过,且大部分应用都可以正常运行。由于现阶段RISC-V设备GPU驱动未开源等问题,导致部分RISC-V设备无法进行视频播放,为此我们也特地为影院适配了RISC-V架构的软解方案。目前,仓库软件包以源码为单位,已完成6511个软件包适配,且这个数字还在不断持续增长中。在这一过程中,感谢PLCT的小伙伴的参与,为我们的RISC-V的适配工作做出的贡献;也感谢龙蜥社区RISC-V SIG组小伙伴们的指导,为我们解答了很多问题、提供了解决方案。一路走到这里,解决完各种问题后,我们终于可以在硬件平台看看效果了!关于RISC-V硬件平台,我们适配了两款板卡,一块是阿里的曳影1520平台,一块是StarFive VisionFive V1板卡,以下便是在曳影1520平台上的运行效果!
平头哥 TH1520 Light-a RISC-V 镜像下载 :
https://cdimage.deepin.com/RISC-V/TH1520-image/
赛昉科技 VisionFive V1 RISC-V镜像下载 :
https://cdimage.deepin.com/RISC-V/VisionFive-v1-image/在这里,非常感谢龙蜥社区RISC-V SIG组、中科院软件所、以及T-HEAD的各位伙伴,在RISC-V适配过程中给予我们的支持和帮助。V23 Alpha阶段,我们已完成了RISC-V的初步适配,但仍然有很多问题需要等待后续的迭代优化,例如部分应用运行失败、部分功能运行存在问题等等。硬件平台上,视频接口以及相关的驱动不统一,缺少开源的显卡驱动、仓库的依赖树不够完备等等,还需要进行重构,解决掉部分软件包依赖错误、仓库缺乏第三方应用等问题。目前我们在逐步将开发环境迁移至github,deepin-community组织下也在计划建设相关的工作流以支持RISC-V的适配需求。未来,还计划适配更多的主流RISC-V的设备。当然,要想建设好RISC-V的生态,绝不是几位软件开发者就能轻易地实现的。这还需要各大社区的支持,各大硬件厂商的参与,采用统一的标准、规范的接口去开发软硬件产品,为社区的开发者提供统一的开发接口,通过不断的优化迭代,RISC-V的生态才能逐步完善。我们衷心地希望,此次深度操作系统的适配能为RISC-V社区注入新的活力,也希望有更多开发者们能加入RISC-V SIG组,与我们一起,为开源软件生态的完善而努力!
作为国内首个桌面操作系统根社区,深度开源社区一直秉承产品创新、技术开放、过程透明、伙伴共创的理念,坚定地成为连接内部开发者和产品,外部开发者和用户的纽带。致力于打造中国主导、具有国际影响力的桌面操作系统根社区,保障操作系统供应链安全,筑牢数字基础设施安全底座。
往期精选 | Selection in the past深度操作系统 V23 Alpha 正式发布!deepin V23 Alpha:行云应用 · 音乐deepin V23 Alpha:行云应用 · 看图&相册打造中国主导的桌面系统根社区!深度操作系统deepin深度使用体验deepin陪我走过的路